This invention is directed to an upper level capability-based transaction protocol for use over a message based bus so that communications may occur through the bus between intelligent nodes, whether they both be host systems or one a host system and the other an IO device.
Local area networks are generally used to provide intercommunication between a number of host systems. Communications between hosts and IO devices are generally provided over IO buses. An IO bus generally provides for device specific commands such as writes or reads to specific registers. A local area network is not set up to accommodate such specific commands. Therefore, a local area network cannot generally be used for communications between a host and IO devices. Additionally, neither local area networks nor I/O buses use capabilities as their fundamental addressing paradigm. In general, a capability identifies the location and size of a buffer as well as other attributes such as access rights.
An IO bus generally operates with an address phase and a data phase. This suffers from the disadvantage that should an error occur in the address phase, actions may be taken at the wrong locations. Error checking mechanisms are available to prevent such occurences, however, such checking may slow down the system. The present invention minimizes the possibility of such errors. The use of capabilities protects a node's memory from similar failures by putting upper and lower bounds on a buffer and in the present invention, access rights identified for the buffer.
It is an object of the present invention to provide a protocol which may be used for intercommunications between any two intelligent nodes. It is a further object of the present system to provide a protocol which is the same for IO devices and host systems, making the bus available to both. A further object is to base these protocols on an underlying capability-based bus. It is still a further object of the present invention to support communications between clients and shared servers.